import { app, BrowserWindow, ipcMain, dialog } from "electron";
import path from "path";
import { registerAllIpc } from "./api"; //导入注册所有 IPC 函数
import { fileURLToPath } from "url"; // 引入 Node.js 内置模块
// 手动定义 __dirname 和 __filename（ESM 环境中需要）
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
// 定义全局变量，获取窗口实例
let win: BrowserWindow | null;

/**
 * 创建一个窗口
 */
const createWindow = () => {
  // 计算预加载脚本路径
  const preloadPath = path.join(__dirname, "./preload.js"); // 根据你的实际路径调整

  win = new BrowserWindow({
    webPreferences: {
      devTools: true,
      // 集成网页和 Node.js，建议在生产环境关闭 nodeIntegration
      nodeIntegration: process.env.NODE_ENV === "development",
      contextIsolation: true, // 建议开启上下文隔离，配合 preload 使用更安全
      preload: preloadPath, // 配置预加载脚本
    },
  });

  // 加载页面
  if (process.env.NODE_ENV !== "development") {
    win.loadFile(path.join(__dirname, "./index.html"));
  } else {
    win.loadURL(`${process.env["VITE_DEV_SERVER_URL"]}`);
  }
};
app.whenReady().then(() => {
  registerAllIpc(); // 注册所有 IPC 处理逻辑
  createWindow(); // 创建窗口
  app.on("activate", () => {
    if (BrowserWindow.getAllWindows().length === 0) createWindow();
  });
});

// 关闭窗口事件
app.on("window-all-closed", () => {
  if (process.platform !== "darwin") {
    app.quit();
  }
});
